/* 
@ 日志管理
*/

const winston = require('winston')
const moment = require('moment')
const DailyRotateFile = require('winston-daily-rotate-file')
const { url } = require('../log/index')

const logger = winston.createLogger({
    level: 'info', // 默认日志级别（只记录 info 及更高级别：info/warn/error）
    // format: winston.format.json(), // 结构化日志（JSON 格式）
    format: winston.format.combine(
        // 添加时间戳到日志消息
        winston.format.timestamp(),
        // 定义日志消息的格式
        winston.format.printf(({ level, message, timestamp }) => {
            const currentTime = moment(timestamp).format('YYYY/MM/DD hh:mm:ss')
            return `${currentTime} ${level}: ${message}`;
        })
    ),
    transports: [
        // new winston.transports.Console(), // 输出到控制台
        // new winston.transports.File({ filename: './log/appw.log' }) // 输出到文件
        new DailyRotateFile({
            filename: `${url}/log%DATE%.log`, // 文件名包含日期
            datePattern: 'YYYY-MM-DD',
            maxSize: '20m', // 单个文件最大 20MB
            maxFiles: '30d' // 保留最近 30 天的日志
        })
    ]
});

module.exports = {
    logger
}